#pragma comment (linker, "/STACK:100000000")
#include <stdio.h>
#include <vector>
using namespace std;
#define N 50100
vector <int> m[N], v[N];
int u[N], s[N][N/32], n, k;
void dfs(int i)
{
	int j, t, l;
	u[i]=1;
	for(j=0; j<m[i].size(); j++)
	{
		l=m[i][j];
		if(!u[l]) dfs(l);
		for(t=0; t<k; s[i][t]|=s[l][t], t++);
	}
	for(j=0; j<m[i].size(); j++)
	{
		l=m[i][j];
		if(!((s[i][l>>5]>>(l&31))&1)) v[i].push_back(l);
		s[i][l>>5]|=1<<(l&31);
	}
}
int main()
{
	int i, j;
	for(scanf("%d%d", &n, &k); k--; scanf("%d%d", &i, &j), m[i-1].push_back(j-1));
	k=(n+31)/32;
	for(i=0; i<n; i++)
		if(!u[i]) dfs(i);
	for(i=0; i<n; i++)
		for(j=0; j<v[i].size(); printf("%d %d\n", i+1, v[i][j]+1), j++);
	return 0;
}